package com.agri.mapper;

import com.agri.entity.FinancingProduct;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 融资产品Mapper接口
 * 提供融资产品数据的CRUD操作
 * 优化说明：替换原有的ProductMapper，明确表用途为融资产品
 *
 * @author Agri-Fin-Sale Team
 * @since 2025-10-31
 */
@Mapper
public interface FinancingProductMapper extends BaseMapper<FinancingProduct> {

    /**
     * 根据产品类型查询融资产品列表
     * @param productType 产品类型：1-信用贷，2-抵押贷，3-担保贷
     * @return 融资产品列表
     */
    @Select("SELECT * FROM t_financing_product WHERE product_type = #{productType} AND status = 1 ORDER BY product_code")
    List<FinancingProduct> selectByProductType(@Param("productType") Integer productType);

    /**
     * 根据产品编码查询融资产品信息
     * @param productCode 产品编码
     * @return 融资产品信息
     */
    @Select("SELECT * FROM t_financing_product WHERE product_code = #{productCode} AND status = 1")
    FinancingProduct selectByProductCode(@Param("productCode") String productCode);

    /**
     * 根据适用农产品类型查询融资产品列表
     * @param cropCategoryCode 农产品分类编码
     * @return 融资产品列表
     */
    @Select("SELECT * FROM t_financing_product " +
            "WHERE applicable_crops LIKE CONCAT('%', #{cropCategoryCode}, '%') " +
            "AND status = 1 ORDER BY product_code")
    List<FinancingProduct> selectByCropCategory(@Param("cropCategoryCode") String cropCategoryCode);

    /**
     * 查询所有启用的融资产品
     * @return 融资产品列表
     */
    @Select("SELECT * FROM t_financing_product WHERE status = 1 ORDER BY product_type, product_code")
    List<FinancingProduct> selectAllEnabled();
}